Failure-atomic Synchronization-free Regions
نویسندگان
چکیده
Emerging persistent memory (PM) technologies, such as Intel and Micron’s 3D XPoint, aim to combine the byteaddressability of DRAM with the durability of storage. The promise of PM is to enable data structures that provide the convenience and performance of in-place load-store manipulation, and yet persist across failures, such as power interruptions and OS or program crashes. Following such a crash, volatile program state (DRAM, program counters, registers, etc.) are lost, but PM state is preserved. A recovery process can then examine the PM state, reconstruct required volatile state, and resume program execution. Reasoning about the correctness of recovery code requires precise semantics for the allowable PM state after a failure. Specifying such semantics is complicated by the desire to support concurrent PM accesses from multiple threads and optimizations that reorder or coalesce accesses. The state observed at recovery can be greatly simplified by providing failure atomicity of sets of PM updates. Failure atomicity assures that either all or none of the updates in a set are visible after failure, reducing the state space recovery code might observe. Recent work has proposed memory persistency models to provide programmers with such semantics [1]–[3]. Like previous works, we refer to the act of writing the value of a store operation to PM as a persist. Similar to memory consistency models, which govern the visibility of writes to shared memory, persistency models govern the order of persists to PM. Most of these persistency models [1]–[3] have been specified at the abstraction level of the hardware instruction set architecture (ISA). Such ISA-level persistency models do not specify semantics for higher-level languages, where compiler optimizations may also reorder or elide PM reads and writes. We first discuss existing proposals that add persistency semantics to the language memory model. In particular, ATLAS [4] and acquire-release persistency (ARP) [5] extend the C++ memory model with persistency semantics. The two proposals differ in the granularity of failure atomicity they guarantee and rely on different synchronization primitives to ensure correct persist ordering in PM. ATLAS: ATLAS [4] provides persistency semantics for lock-based multi-threaded C++ programs. It guarantees failure atomicity at the granularity of an outermost critical section, as shown in Figure 1(a), where a critical section is the code bounded by lock and unlock synchronization primitives. Failure-atomicity of critical sections guarantees that recovery may only observe sequentially consistent PM state. However, l1.lock() ...
منابع مشابه
Synchronization Using Failure Detectors
Many important synchronization problems in distributed computing are impossible to solve (in a fault-tolerant manner) in purely asynchronous systems, where message transmission delays and relative processor speeds are unbounded. It is then natural to seek for the minimal synchrony assumptions that are sufficient to solve a given synchronization problem. A convenient way to describe synchrony as...
متن کاملAnomalies Influence Analysis of the Remote Synchronization System Ressox for the Japanese Quasi-zenith Satellite System
The remote synchronization system RESSOX is a novel concept for a GNSS time keeping system that does not require an on-board atomic clock. RESSOX has been presented as an alternative to the classic GPS scheme and was specifically designed for the Japanese augmentation system QZSS (Quasi-Zenith Satellite System). According to the RESSOX structure, QZSS satellites will carry light and inexpensive...
متن کاملAtomic Instructions in Java
Atomic instructions atomically access and update one or more memory locations. Because they do not incur the overhead of lock acquisition or suspend the executing thread during contention, they may allow higher levels of concurrency on multiprocessors than lock-based synchronization. Wait-free data structures are an important application of atomic instructions, and extend these performance bene...
متن کاملEfficient Wait-Free Implementation of a Concurrent Priority Queue
Binary snapshots p. 18 Linear-time snapshot protocols for unbalanced systems p. 26 Towards a necessary and sufficient condition for wait-free synchronization p. 39 Efficient algorithms for checking the atomicity of a run of read and write operations p. 54 Benign failure models for shared memory p. 69 Generalized agreement between concurrent fail-stop processes p. 84 Controlling memory access co...
متن کاملReplicated Database Recovery Using Multicast Communication
Database replication with update-anywhere capability while maintaining global synchronization and isolation has long been thought impractical. Protocols have been proposed for distributed replicated databases that take advantage of atomic broadcast systems to simplify message passing and conflict resolution in hopes of making replication efficient. This paper presents global recovery algorithms...
متن کاملReal-Time Fault-Tolerant Atomic Broadcast
We present algorithms for Real-Time Fault-Tolerance Uniform Atomic Broadcast developed in the framework of the French project ATR (accord temps réel). We first design a distributed execution model for asynchronous systems with crash failure we called Synchronized Phase System (SPS), then we give an algorithm for Atomic Broadcast in SPS. In a SPS, the processes try to run in synchronized rounds ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017